1. Field of the Invention
The present invention relates to application workload management in a uniprocessor or shared multiprocessor computing environment. More particularly, the invention is directed to techniques for allocating a shared data processing resource among concurrently executing workloads.
2. Description of the Prior Art
By way of background, workload management in a uniprocessor or shared multiprocessor system involves the intelligent sharing of a data processing resource among plural applications without any one application dominating the usage of the resource and thereby degrading the performance of peer applications. Exemplary resources that can be managed in this fashion include CPU time, memory, disk I/O bandwidth, and network bandwidth. In some workload management systems, a determination is made (typically by a system administrator) as to how much of a given resource will be needed by all of the applications that will be utilizing the resource. The resource is then allocated into distinct dedicated resource pools, each of which represents a portion of the resource. Each dedicated resource pool is assigned for exclusive use by an application, or a by a set of related applications. For convenience, the term “application” shall be hereinafter understood to mean either one or more applications.
The fixed allocation scheme ensures predictability of application response times because each dedicated resource pool is always available to its applications. However, an application's actual resource needs may often be less than the amount provided by the dedicated resource pool. Hence, the resource is not optimally utilized because a portion thereof may be dedicated without being used. To correct this problem, some workload management systems permit the sharing of a resource among competing applications. Instead of being assigned a fixed resource allocation, an application is given a minimum resource guarantee within a non-dedicated resource pool that is otherwise sharable among all applications. The goal of this method of workload management is to promote resource allocation fairness by ensuring, on one hand, that an application's resource utilization level does not fall below the minimum guarantee, while on the other hand allowing the unallocated portion of the resource to be shared with other applications that may have temporary needs in excess of their own minimal guarantees. A maximum resource allocation can also be made to define the maximum utilization of a resource that an application will be granted. In some cases, the maximum resource allocation is fixed. In other cases, it simply represents the difference between the total amount of resource available to an application and the actual resource usage by other applications.
A disadvantage of the resource sharing approach is that an application may be initially given a smaller guarantee of a resource than it actually needs during periods of peak resource usage. The only way that the application can acquire more of the needed resource is by growing into the portion of the assigned resource pool that is shared with other applications. This means that application responsiveness may not be predictable during periods of spikes in resource usage. In particular, if the shared resource pool is 100% utilized and an application has permission and desire to increase its use of the shared pool, the software responsible for resource allocation must reclaim the resource from other applications before an additional allocation can be given to the requesting application. The allocation of additional resource from the shared pool to the requesting application may therefore take time. For example, if the resource is memory, the application would suffer latency while data is flushed to disk and memory is freed or otherwise reclaimed. Such delays in resource allocation may impact the performance and response times of the application making the request.
Accordingly, whereas some workload management solutions waste a resource by creating over-sized dedicated resource pools, other solutions impact application performance by under-allocating from a shared resource pool and introducing latency when more of the resource is acquired. The present invention is directed to improvements in the latter type of application workload management, such that the problems inherent in resource sharing may be avoided. In particular, what is needed is a technique whereby a data processing resource can be shared without penalizing applications that may have an immediate need for an increased share of the resource.